/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package eeep.dao;

import eeep.entidades.Escola;
import eeep.util.ConnectionFactory;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

/**
 *
 * @author Joao
 */
public class EscolaDAO {
    
    public void salvarEscola(Escola escola){
        String sql = "INSERT INTO escola(nome_escola,login_escola,senha_escola,email_escola,id_endereco) "
                     + "VALUES(?,?,?,?,"
                     + "(Select id_endereco From endereco "
                     + "Where cidade_endereco=? and bairro_endereco=? and rua_endereco=? and numero_endereco=?))";

        Connection conn = null;
        PreparedStatement pstm = null;
        try {
            // Cria uma conexão com o banco
            conn = ConnectionFactory.getConexao();

            // Cria um PreparedStatment, classe usada para executar a query
            pstm = conn.prepareStatement(sql);

            // Adiciona o valor aos parametros da sql
            pstm.setString(1, escola.getNome());
            pstm.setString(2, escola.getLogin());
            pstm.setString(3, escola.getSenha());
            pstm.setString(4, escola.getEmail());
            pstm.setString(5, escola.getEndereco().getCidade());
            pstm.setString(6, escola.getEndereco().getBairro());
            pstm.setString(7, escola.getEndereco().getRua());
            pstm.setString(8, escola.getEndereco().getNumero());
            
            // Executa a sql para inserir os dados
            pstm.execute();

        } catch (Exception e) {

            e.printStackTrace();
        } finally {

            // Fecha as coneções
            try {
                if (pstm != null) {

                    pstm.close();
                }

                if (conn != null) {
                    conn.close();
                }

            } catch (Exception e) {

                e.printStackTrace();
            }
        }
    }
    public Escola getEscolaPorLogin(String login){
        String sql = "SELECT * FROM escola where login_escola=?";
		Connection conn = null;
		PreparedStatement pstm = null;
		// Classe que vai recuperar os dados do banco de dados
		ResultSet rset = null;

		try {
			conn = ConnectionFactory.getConexao();

			pstm = conn.prepareStatement(sql);
                        pstm.setString(1, login);

			rset = pstm.executeQuery();

			// Enquanto existir dados no banco de dados
			while (rset.next()) {

				Escola escola= new Escola();
				
				// Recupera o nome do banco e atribui ele ao objeto
				escola.setNome(rset.getString("nome_escola"));
                                escola.setLogin(rset.getString("login_escola"));
                                escola.setSenha(rset.getString("senha_escola"));
                                escola.setEmail(rset.getString("email_escola"));

				return escola;
			}
		} catch (Exception e) {

			e.printStackTrace();
		} finally {

			try {

				if (rset != null) {

					rset.close();
				}

				if (pstm != null) {

					pstm.close();
				}

				if (conn != null) {
					conn.close();
				}

			} catch (Exception e) {

				e.printStackTrace();
			}
		}

		return null;
    }
    
    public Escola getEscolaPorEmail(String email){
        String sql = "SELECT * FROM escola where email_escola=?";

		

		Connection conn = null;
		PreparedStatement pstm = null;
		// Classe que vai recuperar os dados do banco de dados
		ResultSet rset = null;

		try {
			conn = ConnectionFactory.getConexao();

			pstm = conn.prepareStatement(sql);
                        pstm.setString(1, email);

			rset = pstm.executeQuery();

			// Enquanto existir dados no banco de dados
			while (rset.next()) {

				Escola escola= new Escola();
				

				// Recupera o nome do banco e atribui ele ao objeto
				escola.setNome(rset.getString("nome_escola"));
                                escola.setLogin(rset.getString("login_escola"));
                                escola.setSenha(rset.getString("senha_escola"));
                                escola.setEmail(rset.getString("email_escola"));

				return escola;
			}
		} catch (Exception e) {

			e.printStackTrace();
		} finally {

			try {

				if (rset != null) {

					rset.close();
				}

				if (pstm != null) {

					pstm.close();
				}

				if (conn != null) {
					conn.close();
				}

			} catch (Exception e) {

				e.printStackTrace();
			}
		}

		return null;
    }
    
    public void deleteEscola(String login){
        String sql = "Delete From escola Where login_escola=?";

        Connection conn = null;
        PreparedStatement pstm = null;
        try {
            // Cria uma conexão com o banco
            conn = ConnectionFactory.getConexao();

            // Cria um PreparedStatment, classe usada para executar a query
            pstm = conn.prepareStatement(sql);

            // Adiciona o valor aos parametros da sql
            pstm.setString(1, login);
            

            // Executa a sql para inserir os dados
            pstm.execute();

        } catch (Exception e) {

            e.printStackTrace();
        } finally {

            // Fecha as coneções
            try {
                if (pstm != null) {

                    pstm.close();
                }

                if (conn != null) {
                    conn.close();
                }

            } catch (Exception e) {

                e.printStackTrace();
            }
        }
    }
    public void atualizarEscola(Escola escola,String login){
        String sql = "Update escola Set nome_escola=?,login_escola=?,"
                     + "senha_escola=?,email_escola=?,id_endereco=(Select id_endereco From endereco "
                     + "Where cidade_endereco=? and bairro_endereco=?"
                     + " and rua_endereco=? and numero_endereco=?)"
                     + "Where login_escola=?";

        Connection conn = null;
        PreparedStatement pstm = null;
        try {
            // Cria uma conexão com o banco
            conn = ConnectionFactory.getConexao();

            // Cria um PreparedStatment, classe usada para executar a query
            pstm = conn.prepareStatement(sql);

            // Adiciona o valor aos parametros da sql
            pstm.setString(1, escola.getNome());
            pstm.setString(2, escola.getLogin());
            pstm.setString(3, escola.getSenha());
            pstm.setString(4, escola.getEmail());
            pstm.setString(5, escola.getEndereco().getCidade());
            pstm.setString(6, escola.getEndereco().getBairro());
            pstm.setString(7, escola.getEndereco().getRua());
            pstm.setString(8, escola.getEndereco().getNumero());
            pstm.setString(9, login);
            

            // Executa a sql para inserir os dados
            pstm.execute();

        } catch (Exception e) {

            e.printStackTrace();
        } finally {

            // Fecha as coneções
            try {
                if (pstm != null) {

                    pstm.close();
                }

                if (conn != null) {
                    conn.close();
                }

            } catch (Exception e) {

                e.printStackTrace();
            }
        }
    }
}
